home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / proto212.zip / EXEMPLE.ZIP / MAKEFILE < prev    next >
Text File  |  1992-01-24  |  4KB  |  94 lines

  1. #Présentation de certaines capacités du make Solucorp
  2.  
  3. #Solutionne la limitation des lignes de commande DOS
  4. #    Cela indique comment créer un fichier de commandes, comment insérer
  5. #    des caractères de continuation, et comment appeler l'utilitaire.
  6. #    A partir de maintenant cc et lib accepteront des commandes de
  7. #    n'importe quelle longueur.
  8. .indir.cc  = c:\cc.$$$    @c:\cc.$$$
  9. .indir.lib = c:\lib.$$$,& @c:\cc.$$$
  10.  
  11. #Résout la limite de 640k sélectivement.
  12. #    Cela indique à make qu'il doit libérer le maximum de mémoire
  13. #    pour l'exécution de la commande cc make proto.
  14. .huge   = cc make proto
  15.  
  16. #Définition de macros
  17. #    La macro SOURCE contiendra la liste de tous les fichiers .c du
  18. #    répertoire courant à l'exception du fichier main.c
  19. SOURCE  ? *.c -main.c
  20.  
  21. # Options du compilateur pour tous les fichiers .c
  22. CFLAGS = -O
  23. # Options du compilateur pour certains fichiers .c
  24. # Voir le commentaire dans la règle .c.$(OBJEXT) plus bas
  25. source2.CFLAGS = -n
  26.  
  27. #    La macro DIROBJ contiendra un path. Ce path sera un des trois
  28. #    possibles. Le premier qui existe sera choisi.
  29. DIROBJ  | c:\obj d:\obj .
  30.  
  31. #Controle l'accès.
  32. #    Cela indique où sont situés et où seront produits les fichiers
  33. #    objets (.obj).
  34. .path.obj = $(DIROBJ)
  35.  
  36. #    Cela indique où sont les fichiers d'inclusion. Requis pour
  37. #    résoudre les tests de dépendances.
  38. .path.h   = . ..\include \compiler\include
  39.  
  40. #Voici les règles générales pour rebatir une librairie.
  41. #    Le préprocesseur est utilisé pour créer un makefile portable.
  42. !if $d(MSDOS)
  43. OBJEXT  = obj   # Extension des fichiers objets sous MSDOS
  44. LIBEXT  = lib   # Extension des libraries sous MSDOS
  45. !else
  46. OBJEXT  = o     # Extension des fichiers objets sous UNIX
  47. LIBEXT  = a     # Extension des librairies sous UNIX
  48. !endif
  49.  
  50. #Règle implicite pour la compilation
  51. .c.$(EXTOBJ):
  52.     # Généralisition de l'usage des macros: Orienté objet
  53.     # $& correspond au nom du module courant
  54.     # $($&.CFLAGS) correspond au options applicable au module courant
  55.     cc -c $($&.CFLAGS) $(CFLAGS) $&.c
  56.  
  57. #Règles générales
  58. #    lib.? est créé à partir des fichiers objets, et non pas des fichiers .c
  59. #    La macro SOURCE contient une liste de .c. Il faut transformer
  60. #    cette liste en .obj (.o sous UNIX). Une syntaxe permet de réviser
  61. #    temporairement la liste.
  62. #    La macro prédéfinie $? permet de mettre à jour la librairie
  63. #    avec seul les fichiers .obj (ou .o) plus récent qu'elle.
  64. lib.$(LIBEXT): $(SOURCE:%b.$(OBJEXT))
  65.     # Véritable sous-routine, voir !define lib plus bas
  66.     !use lib $< "$?"
  67.  
  68. #Préparation de la documentation.
  69. #    Voici la séquence qui a été utilisé pour produire les fichiers
  70. #    présentés dans document.exm.
  71. doc:
  72.     proto -cod -fxsys.nap *.c           # Produit xsys.nap
  73.     naperm xsys.nap xsys.nai xsys.nas xsys.nah
  74.     nadoc xsys.doc xsys.nap xsys.ref    # Produit le manuel de référence
  75.  
  76. #Création du fichier de dépendance pour les fichiers d'inclusion
  77. #    Le fichier makefile.dep est créé en balayant tous les sources
  78. #    du répertoire courant. Ce fichier est silencieusement interprété
  79. #    par make  pour établir les dépendances entre les sources
  80. #    et les fichiers d'inclusion.
  81. dep:
  82.     makedep makefile *.c
  83.  
  84. # Sous-routine. Clé de la portabilité des makefiles
  85. !define lib libnom objets
  86.     !if $d(MSDOS)
  87.         # Un "-+" est ajouté devant chaque .obj
  88.         lib $(libnom) $(objets:-+%s)
  89.     !else
  90.         ar $(libnom) $(objets)#Révise lib.a sous UNIX
  91.         ranlib $(libnom)
  92.     !endif
  93. !enddef
  94.